In a variety of consumer electronics, solid state drives (SSDs) incorporating non-volatile memories (NVMs) are frequently replacing or supplementing conventional rotating hard disk drives for mass storage. These non-volatile memories may include one or more flash memory devices, such as NAND flash memories, and the flash memory devices may be logically divided into blocks with each of the blocks further logically divided into addressable pages. These addressable pages may be any of a variety of sizes (e.g., 512 Bytes, 1 Kilobytes, 2 Kilobytes, 4 Kilobytes), which may or may not match the logical block address sizes used by a host computing device.
When cells or pages in a block are read from an NVM, the process of reading a page may have a detrimental effect on other pages in the block. The method used to read flash memory can cause surrounding pages in the same memory block to change over time (i.e., become programmed). The read page does not fail, but instead the surrounding pages may fail on a subsequent read. This phenomenon is known as the Read Disturb effect. Read Disturb induced errors typically occur when a wordline (WL) of a NVM is read substantially more frequently than other wordlines on the same block. In particular, the immediately adjacent wordlines are the most prone to errors and show large numbers of errors after enough Read Disturb activity has occurred. The Read Disturb errors can cause possible data loss if the errors are too numerous to correct with error-correcting codes (ECCs). Accordingly, when a Read Disturb issue occurs, there is effectively a Read Disturb source or “Aggressor” causing the Read Disturb and a Read Disturb “Victim” that is affected by the source.
In order to handle or mitigate Read Disturb errors, known methods include directly keeping read counts for every block in an NVM. For example, when a certain threshold for access counts of a block is reached, the data of the entire block is then relocated in the NVM. This method, however, is inefficient as the entire block is relocated when the threshold read count is reached and is performed without regard to the actual error rates.
Other known mechanisms for handling Read Disturb include performing periodic Background Media Scanning (BGMS) of the entire NVM to figure out which blocks in the NVM have higher numbers of ECC errors. This methodology, however, can take a very long time before a location is actually scanned. Thus, due to this delay, data affected by Read Disturb may become uncorrectable and force Redundant Array of Independent Disks (RAID) recoveries or other mechanisms to recover the data.
Accordingly, it would be beneficial to more accurately identify sources of Read Disturb errors to be able to perform relocation of data only when necessary.